﻿#ifndef GENERATEREPORT_FINALREPORTDATA_H
#define GENERATEREPORT_FINALREPORTDATA_H

#include <QString>
#include <QObject>
#include <QSharedPointer>
#include <QList>
#include "FinalReportDataManager.h"

#define  FinalReportDataInstance GenerateReport::FinalReportData::getinstance()
namespace GenerateReport
{
    class FinalReportData
    {
    public:
        static FinalReportData* getinstance();

        //最终报告列表      
        /// @brief 添加报告到列表
        /// @param finalReportInformation 文件名+完整路径+保存时间+是否存在
        void appendFinalReport(QStringList finalReportInformation);

        /// @brief 获取最终报告列表
        /// @return 获取最终报告列表
        QList<QStringList> getFinalReportTotalData();

        void deleteFinalReports(QList<QStringList> FinalReports);

        int getFinalReportCount();

        void sort();

        //-----------以下与项目保存相关---------------
        /// @brief 读取配置数据
        void readConfig();

        /// @brief 保存配置数据
        void writeConfig();

        /// @brief 重置数据，新建项目时需要清空原来数据
        void resetData();

        /// @brief 将数据添加到字节数组中
        /// @param byteArray 字节数组
        void dataToByteArray(QByteArray* byteArray);
        //-----------以上与项目保存相关---------------

        void printReportData();
    private:
        FinalReportData() = default;
        ~FinalReportData();

        /// @brief 报告存在性判断
        void ReportExistentialJudgments();
        /// @brief 判断同名文件
        void DuplicateFileJudgment(QString finalReportFilePath);


    private:
        static FinalReportData* _instance;
        QList<QStringList> m_finalReportTotalData{};
        /// @brief 配置文件中数据
        QSharedPointer<FinalReportDataManager> m_configData;
    };
}


#endif
